home *** CD-ROM | disk | FTP | other *** search
- ;**********************************
- ; Inserisce una palette a 24 bit nella copper list AGA
- ;in: a0 ^palette 24 bit ($00rrggbb)
- ; a1 ^copperlist sezione colori (sul primo dc.w $180,$0)
- ; d0.w numero di colori
- SetPalette
- movem.l d2-d3/d6-d7/a2-a3,-(sp)
-
- move.w d0,d6 ;numero di colori che mancano
- move.l a1,a3 ;metto da parte
- addq.l #2,a3 ;porto sula word da riempire
-
- .bankloop
- move.l a3,a1 ;faccio una copia del puntatore
- move.l a3,a2
-
- cmp.w #32,d6
- bge.s .morethan32 ;ci sono almeno 32 colori ancora da settare
- move.w d6,d7 ;colori rimanenti per il ciclo
- subq.w #1,d7 ;a posto per il dbra
- lsl.w #2,d6 ;colori * 4 (offset)
- addq.w #4,d6 ;per saltare $106,$xx00
- adda.w d6,a2
- moveq.l #0,d6 ;azzero per il test in fondo
-
- bra.s .setdone
- .morethan32
- sub.w #32,d6 ;numero colori corrente a posto
- move.w #32-1,d7 ;numero colori nel banco
- adda.w #(128+4),a2 ;indirizzo nibble bassi
- .setdone
-
- moveq #0,d0 ; Azzeriamo d0,d2,d3
- moveq #0,d2
- moveq #0,d3
-
- .copy
- ;-------------------- copio nibble bassi in copperlist
- move.b 3(a0),d2 ; Bb in d2
- andi.b #%00001111,d2 ; nibble basso 0b
- move.b 2(a0),d3 ; Gg in d3
- lsl.b #4,d3 ; 4 bit a sinistra per g0
- or.b d2,d3 ; nibble 0b in d2 e g0 per gb in d3
- move.b d3,1(a2) ; Copiamo il byte in copperlist
- move.b 1(a0),(a2) ; Rr in copperlist
- andi.b #%00001111,(a2) ; nibble basso per 0r
- ;------------------------------- copio nibble alti in copperlist
- move.b 3(a0),d2 ; Bb in d2
- lsr.b #4,d2 ; 4 bit a destra per 0b
- move.b 2(a0),d3 ; Gg in d3
- andi.b #%11110000,d3 ; nibble alto per g0
- or.b d2,d3 ; 0B in d2 con G0 in d3 per gb in d3
- move.b d3,1(a1) ; GB in copperlist
- move.b 1(a0),d2 ; Rr in d2
- lsr.b #4,d2 ; destra di 4 bit per 0r
- move.b d2,(a1) ; 0r in copperlist
- ;-----------------------------
- addq.w #4,a0 ; Prossimo colore palette
- addq.w #4,a1 ; Prossimo registro colore nibble alti
- addq.w #4,a2 ; Prossimo registro colore nibble bassi
- dbra d7,.copy ; Ripetiamo il loop
-
- lea.l (128+4)*2(a3),a3 ;prossimo banco nibble alti
- tst.w d6 ;quanti colori mancano ???
- bne.s .bankloop
-
- movem.l (sp)+,d2-d3/d6-d7/a2-a3
- rts
- ;****************************************
-
-